package com.ibeeking.gmc.global.g.rest.service.impl;

import com.ibeeking.gmc.global.g.rest.service.IAgentInfoService;
import com.ibeeking.found.common.config.prop.FileOssProp;
import com.ibeeking.found.common.utils.DataUtils;
import com.ibeeking.found.common.utils.UrlUtils;
import com.ibeeking.found.common.utils.UserUtils;
import com.ibeeking.gmc.global.service.common.dos.TenantAgentInfoDO;
import com.ibeeking.gmc.global.service.common.param.TenantAgentInfoParam;
import com.ibeeking.gmc.global.service.common.vo.TenantAgentInfoVO;
import com.ibeeking.gmc.global.service.mapper.TenantAgentInfoMapper;
import com.ibeeking.nematos.utils.json.JsonUtils;
import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
import com.baomidou.mybatisplus.core.toolkit.StringUtils;
import com.baomidou.mybatisplus.core.toolkit.Wrappers;
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
import org.springframework.stereotype.Service;

import javax.annotation.Resource;
import java.time.LocalDateTime;

/**
 * @ClassName: AttorneyInfoServiceImpl
 * @Author ibeeking
 * @Description:
 * @Date: 2021/11/26 11:16
 * @Version: 1.0
 */
@Service
public class AgentInfoServiceImpl extends ServiceImpl<TenantAgentInfoMapper, TenantAgentInfoDO> implements IAgentInfoService {

    @Resource
    private FileOssProp fileOssProp;

    @Override
    public TenantAgentInfoVO viewByTenantId(Integer tenantId) {
        QueryWrapper<TenantAgentInfoDO> queryWrapper = new QueryWrapper<>();
        queryWrapper.lambda().eq(TenantAgentInfoDO::getTenantId, tenantId);
        TenantAgentInfoDO tenantAgentInfoDO = baseMapper.selectOne(queryWrapper);
        if (tenantAgentInfoDO == null) {
            return null;
        }
        TenantAgentInfoVO vo = JsonUtils.fromJson(tenantAgentInfoDO, TenantAgentInfoVO.class);
        vo.setIdCardUp(UrlUtils.addUrlDomainName(fileOssProp.getHost(), vo.getIdCardUp()));
        vo.setIdCardDown(UrlUtils.addUrlDomainName(fileOssProp.getHost(), vo.getIdCardDown()));
        vo.setHandHoldIdCard(UrlUtils.addUrlDomainName(fileOssProp.getHost(), vo.getHandHoldIdCard()));
        vo.setEntrustment(UrlUtils.addUrlDomainName(fileOssProp.getHost(), vo.getEntrustment()));
        return vo;
    }

    @Override
    public void delByTenantId(Integer tenantId) {
        baseMapper.delete(Wrappers.lambdaQuery(TenantAgentInfoDO.class).eq(TenantAgentInfoDO::getTenantId, tenantId));
    }

    @Override
    public Boolean save(TenantAgentInfoParam tenantAgentInfoParam) {
        if (tenantAgentInfoParam == null) {
            return false;
        }
        if (tenantAgentInfoParam.getIdCardTermType() == 2) {
            tenantAgentInfoParam.setIdCardTermEnd(null);
        } else {
            DataUtils.trueThrowException(StringUtils.isBlank(tenantAgentInfoParam.getIdCardTermEnd()), "请填写证件有效期截止时间");
        }
        TenantAgentInfoDO tenantAgentInfoDO = JsonUtils.fromJson(tenantAgentInfoParam, TenantAgentInfoDO.class);
        TenantAgentInfoVO agentInfoOld = viewByTenantId(tenantAgentInfoParam.getTenantId());
        Long userId = UserUtils.getUserId();
        if (agentInfoOld != null) {
            tenantAgentInfoDO.setId(agentInfoOld.getId());
            tenantAgentInfoDO.setModifyBy(userId);
        } else {
            tenantAgentInfoDO.setCreateBy(userId);
        }
        tenantAgentInfoDO.setIdCardUp(UrlUtils.removeMallUrlDomainName(fileOssProp.getHost(), tenantAgentInfoDO.getIdCardUp()));
        tenantAgentInfoDO.setIdCardDown(UrlUtils.removeMallUrlDomainName(fileOssProp.getHost(), tenantAgentInfoDO.getIdCardDown()));
        tenantAgentInfoDO.setHandHoldIdCard(UrlUtils.removeMallUrlDomainName(fileOssProp.getHost(), tenantAgentInfoDO.getHandHoldIdCard()));
        tenantAgentInfoDO.setEntrustment(UrlUtils.removeMallUrlDomainName(fileOssProp.getHost(), tenantAgentInfoDO.getEntrustment()));
        tenantAgentInfoDO.setCreateTime(LocalDateTime.now());
        tenantAgentInfoDO.setModifyTime(LocalDateTime.now());
        return saveOrUpdate(tenantAgentInfoDO);
    }

}
